﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace FlowerPower
{
    public partial class frmVareGruppe : Form
    {
        // For at kunne følge med i om brugeren ændrer felterne (i.f.m. redigering af en eksisterende varegruppe) 
        // gemmer vi værdierne længere nede i programmet (men definerer dem her for at de er tilgængelige for alle dele af denne Windowsform)
        string originalVaerdiForVareGruppeNavn = null;
        string originalVaerdiForVareGruppeBeskrivelse = null; 
        
        public frmVareGruppe()
        {
            InitializeComponent();
            
        }

        private void btnTilbageTilVareVareGruppeFroeTypeMenu_Click(object sender, EventArgs e)
        {

        }

        private void btnTilbageTilVareVareGruppeFroeTypeMenu_Click_1(object sender, EventArgs e)
        {
            this.Close();
        }

        private void btnSoegVareGruppe_Click(object sender, EventArgs e)
        {
            
            indlaesVareGrupper(txtVareGruppeSoegeStreng.Text);
        }



        private void frmVareGruppe_Load(object sender, EventArgs e)
        {
            indlaesVareGrupper();
        }


        private void indlaesVareGrupper(string soegeord = "")
        {
            lvVareGrupper.Items.Clear();
            List<Varegruppe> vareGrupper = new List<Varegruppe>();
            DBcontroller minController = new DBcontroller();

            if (soegeord == "")
            {
                // Der er ikke tale om en søgning så vi indlæser aller varegrupper
                vareGrupper = minController.IndlaesVaregrupper();
            }
            else if (soegeord != "")
            {
                // Der er tale om en søgning så vi bruger resultatet af en søgning i databasen
                vareGrupper = minController.SoegVaregruppe(soegeord);
            }
            foreach (Varegruppe item in vareGrupper)
            {
                if (item != null)
                {
                    string[] str = { item.Navn, item.Beskrivelse };
                    ListViewItem lvItem = new ListViewItem(str);
                    lvVareGrupper.Items.Add(lvItem);
                }
            }
            lvVareGrupper.Update();
        }



        private void lvVareGrupper_SelectedIndexChanged(object sender, EventArgs e)
        {
            btnSletValgtVareGruppe.Enabled = true;
            btnAnnullerRedigeringAfValgtVaresVaerdier.Enabled = true;
            lblValgtVareGruppeNavn.Enabled = true;
            txtValgtVareGruppeNavn.Enabled = true;
            lblValgtVareGruppeBeskrivelse.Enabled = true;
            txtValgtVareGruppeBeskrivelse.Enabled = true;
            gboRedigerValgtVareGruppe.Enabled = true;            
            
            ListView.SelectedListViewItemCollection valgtVareGruppe = this.lvVareGrupper.SelectedItems;
            foreach (ListViewItem item in valgtVareGruppe)
            {
                // Gem værdierne for vareGruppeNavn og vareGruppeBeskrivelse så vi kan se om de bliver ændret af brugeren
                originalVaerdiForVareGruppeNavn = item.SubItems[0].Text; 
                originalVaerdiForVareGruppeBeskrivelse = item.SubItems[1].Text; 

                txtValgtVareGruppeNavn.Text = null;
                txtValgtVareGruppeNavn.Text = item.SubItems[0].Text;
                txtValgtVareGruppeBeskrivelse.Text = null;
                txtValgtVareGruppeBeskrivelse.Text = item.SubItems[1].Text;
            }
        }

        private void reagerPaaAendringAfValgtVareGruppeData(object sender, EventArgs e)
        {
            
            if (!string.Equals(originalVaerdiForVareGruppeNavn, txtValgtVareGruppeNavn.Text) || !string.Equals(originalVaerdiForVareGruppeBeskrivelse, txtValgtVareGruppeBeskrivelse.Text))
            {
                btnGemAendringerAfValgtVare.Enabled = true;
            }
            else if (string.Equals(originalVaerdiForVareGruppeNavn, txtValgtVareGruppeNavn.Text) && string.Equals(originalVaerdiForVareGruppeBeskrivelse, txtValgtVareGruppeBeskrivelse.Text))
            {
                btnGemAendringerAfValgtVare.Enabled = false;
            }
        }

        private void btnAnnullerRedigeringAfValgtVaresVaerdier_Click(object sender, EventArgs e)
        {

            // Hvis der annulleres behøver vi ikke længere huske hvad værdierne fra navn og beskrivelse va
            txtValgtVareGruppeNavn.Text = null;
            txtValgtVareGruppeBeskrivelse.Text = null;

            // Hvis der annulleres skal redigering af vareGruppe være inaktiv igen
            btnSletValgtVareGruppe.Enabled = false;
            btnAnnullerRedigeringAfValgtVaresVaerdier.Enabled = false;
            lblValgtVareGruppeNavn.Enabled = false;
            txtValgtVareGruppeNavn.Enabled = false;
            lblValgtVareGruppeBeskrivelse.Enabled = false;
            txtValgtVareGruppeBeskrivelse.Enabled = false;
            gboRedigerValgtVareGruppe.Enabled = false;
        }

        private void slaaMulighedForSletningAfRedigeretVareGruppeFra(object sender, EventArgs e)
        {
            // Formålet er her at undgå forvirring når man efter at have valgt en varegruppe fra listviewet
            // klikker i et af felterne hvor man kan redigere værdiene for den valgte varegruppe
            // Når man gør det er den valgte varegruppe ikke længere markeret i listviewet og der kan
            // derfor opstå uklarhed om hvad det er man sletter (idet slet knappen er ved siden af listviewet)
            btnSletValgtVareGruppe.Enabled = false;
        }

        private void reagerPaaIndtastningAfNyVareGruppesData(object sender, EventArgs e)
        {
            // For at kunne oprette en varegruppe kræves et varegruppenavn
            // Derfor skal gem knappen kun være tilgængelig når et varegruppenavn er defineret
            if (txtNyVareGruppeNavn.Text != "")
            {
                btnGemNyVareGruppe.Enabled = true; 
            }
            else if (txtNyVareGruppeNavn.Text == "")
            {
                btnGemNyVareGruppe.Enabled = false;
            }
        }

        private void btnGemNyVareGruppe_Click(object sender, EventArgs e)
        {
            DBcontroller db = new DBcontroller();
            // Da det er muligt at oprette en varegruppe uden en beskrivelse sikres det at der sendes en tom string hvis der ikke er en beskrivelse defineret
            db.OpretVaregruppe(txtNyVareGruppeNavn.Text, (txtNyVareGruppesBeskrivelse.Text));
            indlaesVareGrupper();
            txtNyVareGruppeNavn.Text = "";
            txtNyVareGruppesBeskrivelse.Text = "";
        }

        private void btnGemAendringerAfValgtVare_Click(object sender, EventArgs e)
        {
            DBcontroller db = new DBcontroller();
            db.RetVaregruppe(originalVaerdiForVareGruppeNavn, originalVaerdiForVareGruppeBeskrivelse, txtValgtVareGruppeNavn.Text , txtValgtVareGruppeBeskrivelse.Text);
            txtValgtVareGruppeNavn.Text = ""; 
            txtValgtVareGruppeBeskrivelse.Text = "";
            gboRedigerValgtVareGruppe.Enabled = false;
            indlaesVareGrupper();
        }

        private void btnSletValgtVareGruppe_Click(object sender, EventArgs e)
        {
            string navnPaaVareGruppeDerSkalSlettes = "";

            ListView.SelectedListViewItemCollection valgtVareGruppe = this.lvVareGrupper.SelectedItems;
            foreach (ListViewItem item in valgtVareGruppe)
            {
                navnPaaVareGruppeDerSkalSlettes = item.SubItems[0].Text;
            }
            
            DBcontroller db = new DBcontroller();
            db.SletVaregruppe(navnPaaVareGruppeDerSkalSlettes);

            btnSletValgtVareGruppe.Enabled = false;
            gboRedigerValgtVareGruppe.Enabled = false;
            txtValgtVareGruppeNavn.Text = "";
            txtValgtVareGruppeBeskrivelse.Text = "";
            indlaesVareGrupper();
        }


        private void reagerPaaIndtastningAfSoegeStreng(object sender, EventArgs e)
        {
            if (txtVareGruppeSoegeStreng.Text != "")
            {
                btnNulstilSoegning.Visible = true;
            }
        }

        private void btnNulstilSoegning_Click(object sender, EventArgs e)
        {
            txtVareGruppeSoegeStreng.Text = "";
            btnNulstilSoegning.Visible = false;
            indlaesVareGrupper();
        }

        

        
        
    }
}
